package com.shujia.day13;

public class Demo05ThreadControl {
    public static void main(String[] args) throws InterruptedException {
        /*
            TODO:
                线程控制方法
                ① sleep 可以使当前的线程处于睡眠状态（具有倒计时的阻塞状态）
                    sleep(1000)  => 每次执行当前线程睡眠1秒
                    sleep(long millis, int nanos)  => 按毫秒+纳秒方式睡眠
                ② join 当使用该方法时，其他线程必须等待当前线程执行完成才能继续执行
                ③ yield 礼让线程,让当前线程退出CPU的执行权,重新竞争
                ④ setDaemon 设置当前线程为后台守护线程


         */

//        ControlThread thread1 = new ControlThread("汪雨");
//        thread1.start();
////        thread1.join();  //
//        ControlThread thread2 = new ControlThread("易政");
//        thread2.start();

        new ControlThread("易政").start();
        new ControlThread("杨德广").start();
        new ControlThread("袁笑琪").start();





    }

    static class ControlThread extends Thread {
        public ControlThread(String name) {
            super(name);
        }

//        @Override
//        public void run() {
//            for (int i = 0; i < 10; i++) {
//                if (i % 2 == 0) {
//                    System.out.println("当前线程名称:" + this.getName() + "遇到偶数开始睡眠....");
//                    try {
//                        Thread.sleep(1000);
//                    } catch (InterruptedException e) {
//                        throw new RuntimeException(e);
//                    }
//                }
//            }
//        }


        /*
            礼让线程
         */
        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                if ("易政".equals(this.getName())) {
                    System.out.println("遇到易政,开始礼让");
                    yield();
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    System.out.println(this.getName()+"正在执行...");
                } else if ("杨德广".equals(this.getName())) {
                    System.out.println("遇到杨德广,开始礼让");
                    yield();
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    System.out.println(this.getName()+"正在执行...");
                } else {
                    System.out.println(this.getName()+"正在执行...");
                }
            }
        }
    }

}
